﻿using System;
using System.Linq;
using System.Text;
using Spring.Data.Core;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using Spring.Data;
using Spring.Data.Common;
using GestionadorBaseDatos;
using CRUD.InterfaceDAO;
namespace CRUD.DAO
{
    public class CategoriaDao : AdoDaoSupport, IDaoCategoria
    {
        #region Querys para metodos
        private ParticipanteDao participanteDao;
        private string sqlById = @"select idCategoria, nombre, descripcion from categoria where idCategoria = @idCategoria";
        private string sql = "select idCategoria, nombre, descripcion from categoria";
        private string sqlInsert = "INSERT INTO categoria (idCategoria, nombre, descripcion ) VALUES (@idCategoria, @nombre, @descripcion )";

        # endregion

        # region metodos

        /// <summary>
        /// metodo para obtener lista con todas las categoris
        /// </summary>
        /// <returns>lista categoria</returns>
        public virtual IList GetAll()
        {
            return (IList)AdoTemplate.QueryWithRowMapper(CommandType.Text, sql, new CategoriaRowMapper());
        }

        /// <summary>
        /// metodo para insertar categoria en la bd
        /// </summary>
        /// <param name="crear">datos con la categoria a agregar</param>
        public void Insert(Categoria crear)
        {

            IDbParameters dbParameters = AdoTemplate.CreateDbParameters();
            dbParameters.Add("@idCategoria", MySql.Data.MySqlClient.MySqlDbType.Int32, 50).Value = crear.IdCategoria;
            dbParameters.Add("@nombre", MySql.Data.MySqlClient.MySqlDbType.String, 50).Value = crear.Nombre;
            dbParameters.Add("@descripcion", MySql.Data.MySqlClient.MySqlDbType.String, 50).Value = crear.Descripcion;
            AdoTemplate.ExecuteNonQuery(CommandType.Text, sqlInsert, dbParameters);
        }

        /// <summary>
        /// obtiene de la bd una categoria segun su Id
        /// </summary>
        /// <param name="categoria">categoria con la id a buscar</param>
        /// <returns>categoria buscada</returns>
        public Categoria GetById(Categoria categoria)
        {
            
            return (Categoria)AdoTemplate.QueryForObject(CommandType.Text, sqlById, new CategoriaRowMapper(), "@idCategoria", DbType.String, 30, categoria.IdCategoria);

        }

        # endregion
    }
}
